<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="author" content="John Doe">
    
    
    
    
    
    
    <title>夯实基础，保有自我，继续成长——锦先生2023年终总结 | Hexo</title>
    <!-- inject:style -->
    <link href="/css/style.css" rel="stylesheet" type="text/css">
    <!-- endinject -->
    <style>
        .cube-loading {
            top: 0;
            position: fixed;
            width: 100%;
            height: 100%;
            background: url('/images/lg/loading.gif') no-repeat center center;
            background-color: rgba(0,0,0,.7);
        }

        .cube-loading.out {
            display: none;
        }

        .cube-loading:before {
            display: block;
            content: 'Loading';
            position: relative;
            width: 100%;
            top: 50%;
            right: -50%;
            color: #fff;
        }

        @media(max-width: 768px) {
            .cube-loading:before {
                font-size: 1.2em;
                transform: translate(-24px,20px);
                -webkit-transform: translate(-24px,20px);
                -o-transform: translate(-24px,20px);
                -ms-transform: translate(-24px,20px);
            }
        }

        @media(min-width: 768px) {
            .cube-loading:before {

            }
        }
    </style>
    
<meta name="generator" content="Hexo 6.3.0"></head>
<body>
<div class="cube-body">
    <nav id="cube-top-memu" class="cube-menu">
    <ul class="cube-menu-collapse">
        
        <li>
            <i class="cube-icon cube-icon-home" aria-hidden="true"></i>
            <a href="/">首页</a>
        </li>
        
        <li>
            <i class="cube-icon cube-icon-archive" aria-hidden="true"></i>
            <a href="/archives">归档</a>
        </li>
        
        <li>
            <i class="cube-icon cube-icon-categories" aria-hidden="true"></i>
            <a href="/categories">分类</a>
        </li>
        
        <li>
            <i class="cube-icon cube-icon-tags" aria-hidden="true"></i>
            <a href="/tags">标签</a>
        </li>
        
        <li>
            <i class="cube-icon cube-icon-about" aria-hidden="true"></i>
            <a href="/about-me">关于我</a>
        </li>
        
    </ul>
</nav>
<nav class="cube-side-menu" id="cube-side-menu">
    <ul class="cube-menu-list">
        
        <li>
            <a class="lrc-control">Open Lyrics</a>
        </li>
        
        <li>
            <a class="scroll-to-top">Top</a>
        </li>
    </ul>
</nav>
    <header class="cube-header" id="cube-header">
    <img src=" /source/images/bg/m1.jpg " alt="头部背景图片">
    
    <div class="cube-type">
        <span class="cube-typed-title">锦先生的个人小站</span>
        <span class="cube-typed-cursor">|</span>
    </div>
    
</header>

    <style>
        nav.cube-menu:before {
            content: '';
            visibility: hidden;
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 44px;
        
            filter: blur(5px);
            -webkit-filter: blur(5px);
        
            z-index: -1;
            background-image: url('/images/bg/m1.jpg');
            background-repeat: no-repeat;
            background-position: center -356px;
            background-size: cover;
            background-color: transparent;
        }

        header.cube-background.cube-header-background {
            visibility: hidden;
            background-image: url('/images/bg/m1.jpg');
            background-position: center -400px;
        }
    </style>
    <header class="cube-background cube-header-background">
        
        <div class="cube-type">
            <span class="cube-typed-title">锦先生的个人小站</span>
            <span class="cube-typed-cursor">|</span>
        </div>
        
    </header>
    <div class="load-header-background"></div>
    <script>
        (function (window) {

            window.headerModule = {}
            window.headerModule.image = {
                width: '2000',
                height: '1414'
            }

        })(window)
    </script>
    
    <div class="cube-content">
        <div class="cube-left">
            <div class="cube-article">
    <h1 class="title">夯实基础，保有自我，继续成长——锦先生2023年终总结</h1>
    
    <div class="cube-article-header">
        <div class="cube-article-date">
            <i class="cube-icon cube-icon-date" aria-hidden="true"></i>
            <!-- moment.js对象 -->
            2023-12-23
        </div>
        <div class="cube-article-tags">
    <i class="cube-icon cube-icon-tag" aria-hidden="true"></i>
    
</div>
    </div>
    
    <div class="cube-article-content cube-markdown">
        
        <hr>
<h2 id="theme-juejin"><a href="#theme-juejin" class="headerlink" title="theme: juejin"></a>theme: juejin</h2><h1 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h1><p>屏幕前的各位大家好呀，首先很感谢你能点进来看这样一篇由一位技术小白&amp;大二学生撰写的的博文。在这篇文章中，虽说是对自己这一年来学习生活的总结，但会提取出部分我认为对一些和我情况类似的同学可能会有用的知识，来保证这篇文章对平台而言不是水文23333</p>
<p>有关技术，将主要将从以下几个主题展开：</p>
<ol>
<li>如何高效学习？以实用主义为原则，应用驱动型学习</li>
<li>前沿知识很吸引人对吧？但不应该绕开计算机基础理论（四大件）</li>
<li>算法真的没有用吗？偶尔刷刷力扣也好！</li>
<li>用AI会有负罪感？没大碍，很多程序员早就习惯把GPT放手边随时用了</li>
<li>到底是知识付费还是纯卖课？耐心找找，很多优质资源用不着花钱！</li>
<li>写博客总是会害怕写不好？这是好事！鼓励分享，鼓励交流！</li>
</ol>
<p>当然我也夹带私货，会说几点这一年来我的“人生感悟”，放在文末：</p>
<ol>
<li>有人，才有一切。一定要多与人交流，切不可“唯技术论”</li>
<li>保有自我，必要时刻展露自己的锋芒，拒绝被PUA</li>
<li>不想学的时候就允许自己休息，学会生活</li>
</ol>
<h1 id="我的技术实践学习总结"><a href="#我的技术实践学习总结" class="headerlink" title="我的技术实践学习总结"></a>我的技术实践学习总结</h1><h2 id="一、如何高效学习？以实用主义为原则，应用驱动型学习"><a href="#一、如何高效学习？以实用主义为原则，应用驱动型学习" class="headerlink" title="一、如何高效学习？以实用主义为原则，应用驱动型学习"></a>一、如何高效学习？以实用主义为原则，应用驱动型学习</h2><p>在上大二之前的我，学习一门技术最常用的方法就是啃书，边看书边敲代码。</p>
<p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f2259b72d19f426797559158d283e191~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=500&h=646&s=391166&e=png&b=f8f7f7" alt="image.png"></p>
<blockquote>
<p>我的C++就是边看这本《C++ Essential》边写代码学会的</p>
</blockquote>
<p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5103b3efff664df9b2ee4231f4fc1d9c~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=800&h=800&s=214449&e=png&b=fcfcfc" alt="image.png"></p>
<blockquote>
<p>这是学校发的教材，初学Java用的是这本。但这本书讲的不够详细，之后又去看了《疯狂Java》</p>
</blockquote>
<p>这样做的话效率其实挺高的，掌握知识也比较全面，而且在如今这个浮躁的社会里静下心来好好看看书也是一种锻炼。</p>
<p>但对我来说，热情和动力总是很难保持，看书看着看着就会睡着（）</p>
<p>而且从应用角度来看，书上一些知识虽然花了大篇幅来讲，但实际用的却很少。就比如Java的多线程，除了大一的时候做小游戏用到过一回，其他时候就再也没怎么用到了——或许是我做的项目还太少吧。</p>
<p>还是缺乏应用，知识理解得不深刻，知识点之间也缺乏主动的连结，很多知识到后头就忘了。</p>
<p>这样下来，其实有点难以坚持下去。</p>
<p>后来受学长启发，<strong>“只有当你开始做东西的时候，你才会知道自己缺什么”</strong>，开始实践学长口中所说的“项目驱动型学习”。</p>
<p>第一次尝试，是在今年的暑假，第六届青训营大项目里我负责简易抖音的视频点赞操作。由于整个项目都要求使用Go语言，然后我就花十来天想办法速成了Go的语法基础——这个过程我才发现其实互联网上有非常多的在线编程语言学习网站，在完成一个个编程任务的同时就能把知识学到。</p>
<p>学会Go当然还不够，要做项目，就要进行很多次版本迭代；要进行版本迭代，就得学Git，飞快得又去过了一遍Git基础</p>
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dcd3c9c1a78a4f5ab3564b258d6f4cc9~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=338&h=286&s=81695&e=png&b=fefaf9" alt="image.png" width="30%" />

<p>功能实现还关联到Redis数据库，此前一直听闻的是MySQL，于是又赶忙去学了Redis——在使用Redis的时候，渐渐发现了它的优势，对它就尤为感兴趣，打算以后深入学学。</p>
<img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bda626a7fda841cfb6b2731068ae437e~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1171&h=827&s=39150&e=png&b=1f1f1f" alt="image.png" width="90%" />

<p>也简单入门了Apifox做功能测试工作——当时其实还不是特别理解Apifox这种工具的必要性，直到当我开始做大二期末的课设……</p>
<img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8dc506042ffb4d91b3b1efdd69a86425~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1406&h=858&s=79442&e=png&b=1d1e28" />

<p>最后磕磕绊绊终于把功能实现了，当时作为一颗小白菜的我别提多高兴了XD。这里贴上部分代码：</p>
<figure class="highlight go"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">func</span> <span class="title">FavoriteAction</span><span class="params">(c *gin.Context)</span></span> &#123;  </span><br><span class="line">    <span class="keyword">var</span> err <span class="type">error</span>  </span><br><span class="line">    <span class="keyword">var</span> videoInfo VideoInfo  </span><br><span class="line">    <span class="comment">//连接到redis数据库  </span></span><br><span class="line">    client := redis.NewClient(&amp;redis.Options&#123;  </span><br><span class="line">        Addr: <span class="string">&quot;localhost:6379&quot;</span>, <span class="comment">// Redis服务器地址  </span></span><br><span class="line">        Password: <span class="string">&quot;&quot;</span>, <span class="comment">// Redis最好设置密码，不能被任意的人访问  </span></span><br><span class="line">        DB: <span class="number">0</span>, <span class="comment">// Redis数据库索引，默认0  </span></span><br><span class="line">    &#125;) <span class="comment">//登录数据库使用的  </span></span><br><span class="line">    <span class="comment">// 先检查客户端和Redis的连接是否正常  </span></span><br><span class="line">    _, err = client.Ping().Result()  </span><br><span class="line">    <span class="keyword">if</span> err != <span class="literal">nil</span> &#123;  </span><br><span class="line">        log.Fatal(err) <span class="comment">// 记录到日志中  </span></span><br><span class="line">        fmt.Println(err) <span class="comment">// 打印错误信息  </span></span><br><span class="line">    &#125;  </span><br><span class="line">    <span class="comment">//获取SQL数据库连接  </span></span><br><span class="line">    db := Utils.GetDbConnection()  </span><br><span class="line">  </span><br><span class="line">    <span class="comment">//......</span></span><br><span class="line">    db.Find(&amp;videoInfo).Limit(<span class="number">10</span>).Order(videoID)  </span><br><span class="line">  </span><br><span class="line">    jsonVideoInfo, err := json.Marshal(videoInfo) <span class="comment">// 序列化  </span></span><br><span class="line">    <span class="comment">//......</span></span><br><span class="line">    <span class="keyword">if</span> actionType == <span class="string">&quot;1&quot;</span> &#123; <span class="comment">// 为视频点赞  </span></span><br><span class="line">        err = client.ZAdd(userID, redis.Z&#123;Score: <span class="number">1</span>, Member: jsonVideoInfo&#125;).Err() <span class="comment">// 用户的点赞，要记录对于用户来说，ta点赞了多少个视频，有哪些视频被点赞了  </span></span><br><span class="line">    <span class="keyword">if</span> err != <span class="literal">nil</span> &#123;  </span><br><span class="line">        log.Println(err) <span class="comment">// 记录到日志中  </span></span><br><span class="line">        fmt.Println(err) <span class="comment">// 打印错误信息  </span></span><br><span class="line">    &#125;  </span><br><span class="line">    _, err = client.ZAdd(video_ID, redis.Z&#123;Score: <span class="number">1</span>, Member: userID&#125;).Result() <span class="comment">// 视频的点赞，要记录对于视频来说，有多少人赞了，哪些人赞了  </span></span><br><span class="line">    <span class="keyword">if</span> err != <span class="literal">nil</span> &#123;  </span><br><span class="line">        log.Println(err) <span class="comment">// 记录到日志中  </span></span><br><span class="line">        fmt.Println(err) <span class="comment">// 打印错误信息  </span></span><br><span class="line">    &#125;  </span><br><span class="line">        fmt.Println(<span class="string">&quot;您已成功为ID为&quot;</span> + video_ID + <span class="string">&quot;的视频点了一个赞！&quot;</span>)  </span><br><span class="line">    &#125; <span class="keyword">else</span> &#123; <span class="comment">// 给视频取消点赞  </span></span><br><span class="line">    err = client.ZRem(userID, jsonVideoInfo).Err() <span class="comment">// 用户的点赞，要记录对于用户来说，ta点赞了多少个视频，有哪些视频被点赞了  </span></span><br><span class="line">    <span class="comment">//......</span></span><br><span class="line">    c.JSON(<span class="number">200</span>, gin.H&#123;<span class="string">&quot;status_code&quot;</span>: <span class="number">0</span>, <span class="string">&quot;status_msg&quot;</span>: <span class="string">&quot;OK&quot;</span>&#125;) <span class="comment">// 真的应该这样去处理错误数据吗  </span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>这样的学习全过程动力都在线，一方面原因是客观的压力，另一方面原因也是自己对新技术的好奇。这样以“实用主义”为原则的学习是颇具有实际意义的。</p>
<p>目光放在我这学期的课设上——用JSP和MySQL开发一个简易购物网站系统。这个课设我还是很重视的，因为我没有将目光停留在应付期末答辩上，而是期望将来能用上Spring，Vue和RabbitMQ等流行技术来进一步优化它。</p>
<p>这个过程我主要遇到两个问题：</p>
<ol>
<li>IDEA下创建的项目，webapp的文件路径配置是设置好了的，如果要在其中设立新的子目录并在子目录当中创建新页面，很可能会出现前端数据无法传给后台的情况</li>
</ol>
<blockquote>
<p>本例中，form表单当中的数据点提交后无法发送给后台的servlet程序</p>
</blockquote>
<img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e86e6af3cb074fe1ac5f8f1ca258ed88~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=467&h=460&s=58085&e=png&b=f6f7fa" alt="image.png" width="50%" />

<img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/92fec8be85e345f7af8a430b45b14b10~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1607&h=492&s=304340&e=png&b=fefdfd"/>

<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/379ecc30201c40bdb1963e029bd76378~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1920&h=401&s=19707&e=png&b=ffffff"/>

<p>将所有页面文件直接放在webapp目录下就能正常运行了。但如果偏要设立子目录那样设计，就需要自己去配置文件路径了。</p>
<ol start="2">
<li>将图片上传至数据库。要实现这个功能，第一就要在HTML标签属性中表明自己上传的数据类型是文件。第二就是在request中获取到Part部分，这里包含了图片文件。第三就要规定图片上传的路径位置。第四就是获取图片文件的名称（有需要的话可以进行重命名）</li>
</ol>
<blockquote>
<p>这个过程中，涉及到了图片以二进制形式传输的知识</p>
</blockquote>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">UploadFileTool</span> <span class="keyword">extends</span> <span class="title class_">HttpServlet</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">UploadImage</span><span class="params">(HttpServletRequest request,String save_directory)</span> <span class="keyword">throws</span> ServletException, IOException &#123;</span><br><span class="line">        Part filePart=request.getPart(<span class="string">&quot;certifi&quot;</span>);<span class="comment">//获取上传文件的Part对象</span></span><br><span class="line">        String fileName=getFileName(filePart);<span class="comment">//获取上传文件的原始文件名</span></span><br><span class="line">        String savePath=request.getServletContext().getRealPath(<span class="string">&quot;&quot;</span>)+ File.separator+save_directory;<span class="comment">//获取保存文件的目录路径</span></span><br><span class="line">        File saveDir=<span class="keyword">new</span> <span class="title class_">File</span>(savePath);<span class="comment">//创建保存文件的目录</span></span><br><span class="line">        <span class="keyword">if</span>(!saveDir.exists())&#123;</span><br><span class="line">            saveDir.mkdir();</span><br><span class="line">        &#125;</span><br><span class="line">        filePart.write(savePath+File.separator+fileName);<span class="comment">//创建保存的文件</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> savePath;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span>  String <span class="title function_">getFileName</span><span class="params">(Part part)</span>&#123;</span><br><span class="line">        String contentDisposition=part.getHeader(<span class="string">&quot;content-disposition&quot;</span>);</span><br><span class="line">        String[] elements=contentDisposition.split(<span class="string">&quot;;&quot;</span>);</span><br><span class="line">        <span class="keyword">for</span>(String element:elements)&#123;</span><br><span class="line">            <span class="keyword">if</span>(element.trim().startsWith(<span class="string">&quot;filename&quot;</span>))&#123;</span><br><span class="line">                <span class="keyword">return</span> element.substring(element.indexOf(<span class="string">&#x27;=&#x27;</span>)+<span class="number">1</span>).trim().replace(<span class="string">&quot;&quot;&quot;,&quot;&quot;);</span></span><br><span class="line"><span class="string">            &#125;</span></span><br><span class="line"><span class="string">        &#125;</span></span><br><span class="line"><span class="string">        return &quot;&quot;;</span></span><br><span class="line"><span class="string">    &#125;</span></span><br><span class="line"><span class="string">&#125;</span></span><br></pre></td></tr></table></figure>

<p>通过查资料+自己一步步调试实现出来的，成就感满满。</p>
<p>这样的“项目驱动型学习”保持学习动力的同时还实实在在地锻炼了编程能力，是非常好的，因为做项目的本质就是应用。</p>
<p>这样的学习会让自己立刻明白自己究竟缺少什么，给自己接下来的学习指明方向，是可以避免某些情况下的盲目学习的。</p>
<blockquote>
<p>比如，要做好上文提到的极简版抖音，Redis、MySQL、Git、Minio等技术都是需要的。而我为了现学现用只学了当时所需要的部分，还不足够全面、深入，这就为我之后的学习明确了目标。</p>
</blockquote>
<p>当然，按照这样的学习思路，我们还可以向外推导。如果要学习某一门技术知识，也可以去牛客网找题目做，或者背八股文，这样的“应用型驱动”也可以在一定程度上加深我们对知识的理解。</p>

    </div>
</div>

<div class="cube-article-nav">
    <ul>
        
        
        <li class="next">
            <a href="/2023/12/17/%E5%B0%8F%E6%A0%91%E6%B4%9E/">
                小树洞
                <i class="cube-icon cube-next" aria-hidden="true"></i>
            </a>
        </li>
        
    </ul>
</div>


<!-- TODO 根据theme.comment的内容进行入口选择 -->



        </div>
        <div class="cube-right">
            

<div class="cube-search cube-sidebar" id="cube-search">
    <div class="search-container">
        <input type="text" placeholder="Search" class="cube-search-input" id="cube-search-input">
        <i class="cube-icon cube-icon-search cube-search-submit" aria-hidden="true"></i>
    </div>
    <!-- TODO 通过给window赋一个全局变量，通过脚本赋值 -->
</div>
<script>
    (function (window) {
        'use strict';
        window.searchModule = {}
        window.searchModule.JSONUrl = '/content.json'
        window.searchModule.rootUrl = '/'
    })(window)
</script>
<div class="cube-search-form">
    <div class="cube-search-control">
        <input type="text" placeholder="Search" class="search-input">
        <a class="close-button">
            <i class="cube-icon cube-close" aria-hidden="true"></i>
        </a>
    </div>
    <div class="cube-search-result"></div>
</div>


<div class="cube-author cube-sidebar" id="cube-author">
    
    
    <span>John Doe</span>
    
    
    <div class="count">
        <a class="count articles"><span>9</span>Article</a>
        <a class="count tags"><span>0</span>Tags</a>
        <a class="count categories"><span>0</span>Categories</a>
    </div>
</div>



<div class="cube-music cube-sidebar" id="cube-music">
    <div class="cube-player aplayer" id="cube-player"></div>
</div>
<script>
    (function (window) {
        window.musicModule = {}
        window.musicModule.musicConfig = '{"narrow":false,"autoplay":false,"showlrc":3,"theme":"#b7daff","mutex":true,"mode":"circulation","preload":"auto","listmaxheight":"513px","music":[{"title":"Dear friends","author":"TRIPLANE","url":"http://cube-1252774894.cosgz.myqcloud.com/music/source/TRIPLANE - Dear friends.mp3","lrc":"http://cube-1252774894.cosgz.myqcloud.com/music/lrc/Dear friends - TRIPLANE.lrc","pic":"http://cube-1252774894.cosgz.myqcloud.com/music/image/TRIPLANE - Dear friends.jpg"},{"title":"Butter-Fly","author":"和田光司","url":"http://cube-1252774894.cosgz.myqcloud.com/music/source/和田光司 - Butter-Fly (ピアノヴァージョン).mp3","lrc":"http://cube-1252774894.cosgz.myqcloud.com/music/lrc/Butter-Fly (ピアノヴァージョン) - 和田光司.lrc","pic":"http://cube-1252774894.cosgz.myqcloud.com/music/image/和田光司 - Butter-Fly (ピアノヴァージョン).jpg"},{"title":"宵闇花火","author":"葉月ゆら","url":"http://cube-1252774894.cosgz.myqcloud.com/music/source/葉月ゆら - 宵闇花火.mp3","lrc":"http://cube-1252774894.cosgz.myqcloud.com/music/lrc/宵闇花火 - 葉月ゆら.lrc","pic":"http://cube-1252774894.cosgz.myqcloud.com/music/image/葉月ゆら - 宵闇花火.jpg"}]}'
        window.musicModule.lrcConfig = {
            open: 'Open Lyrics',
            close: 'Close Lyrics'
        }
    })(window)
</script>



<div class="cube-recent-posts cube-sidebar" id="cube-recent-posts">
    <div class="title">
        <a>Recent Posts</a>
    </div>
    <ul class="list">
        
        
        <li>
            <!-- TODO 如果文章要显示图片，那么在front-matter上添加preview属性(url or path) -->
            
            <div class="normal">
                <p class="index first">
                    <span>1</span>
                </p>
                <p class="title">
                    <a href="/2023/12/23/%E5%A4%AF%E5%AE%9E%E5%9F%BA%E7%A1%80%EF%BC%8C%E4%BF%9D%E6%9C%89%E8%87%AA%E6%88%91%EF%BC%8C%E7%BB%A7%E7%BB%AD%E6%88%90%E9%95%BF%E2%80%94%E2%80%94%E9%94%A6%E5%85%88%E7%94%9F2023%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/" title="夯实基础，保有自我，继续成长——锦先生2023年终总结">夯实基础，保有自我，继续成长——锦先生2023年终总结</a>
                </p>
            </div>
            
        </li>
        
        
        
        <li>
            <div class="normal">
                <p class="index">
                    <span>2</span>
                </p>
                <p class="title">
                    <a href="/2023/12/17/%E5%B0%8F%E6%A0%91%E6%B4%9E/" title="小树洞">小树洞</a>
                </p>
            </div>
        </li>
        
        
        
        <li>
            <div class="normal">
                <p class="index">
                    <span>3</span>
                </p>
                <p class="title">
                    <a href="/2023/12/13/MyOwnBlog%E8%BF%90%E8%A1%8C%E5%92%8C%E9%83%A8%E7%BD%B2%E5%8E%86%E7%A8%8B/" title="MyOwnBlog运行和部署历程">MyOwnBlog运行和部署历程</a>
                </p>
            </div>
        </li>
        
        
        
        <li>
            <div class="normal">
                <p class="index">
                    <span>4</span>
                </p>
                <p class="title">
                    <a href="/2023/12/09/%E6%98%8E%E7%A1%AE%E8%81%8C%E4%B8%9A%E6%96%B9%E5%90%91%EF%BC%8C%E5%81%9A%E5%87%BA%E8%81%8C%E4%B8%9A%E9%80%89%E6%8B%A9-%E4%B8%80%E6%AC%A1%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB%E4%BC%9A%E8%A7%82%E5%90%8E%E6%84%9F/" title="明确职业方向，做出职业选择---一次技术分享会观后感">明确职业方向，做出职业选择---一次技术分享会观后感</a>
                </p>
            </div>
        </li>
        
        
        
        <li>
            <div class="normal">
                <p class="index">
                    <span>5</span>
                </p>
                <p class="title">
                    <a href="/2023/12/08/algo-lanqiao/" title="锦先生-参加蓝桥杯所需要做的一些准备">锦先生-参加蓝桥杯所需要做的一些准备</a>
                </p>
            </div>
        </li>
        
        
    </ul>
</div>







<div class="cube-links cube-sidebar" id="cube-links">
    <div class="title">
        <a>Links</a>
    </div>
    <ul class="list">
        
        <li>
            
            
            <img src="http://cube-1252774894.cosgz.myqcloud.com/links/GitHub.png">
            
            <a href="https://github.com/ZEROKISEKI" target="_blank">GitHub</a>
        </li>
        
        <li>
            
            
            <img src="http://cube-1252774894.cosgz.myqcloud.com/links/Coding.png">
            
            <a href="https://coding.net/u/SORA1" target="_blank">Coding</a>
        </li>
        
        <li>
            
            
            <img src="http://cube-1252774894.cosgz.myqcloud.com/links/SF.png">
            
            <a href="https://segmentfault.com/u/aonosora" target="_blank">SF社区</a>
        </li>
        
        <li>
            
            
            <img src="http://cube-1252774894.cosgz.myqcloud.com/links/开发者头条.png">
            
            <a href="https://toutiao.io/u/148070" target="_blank">开发者头条</a>
        </li>
        
    </ul>
</div>



<div class="cube-friend-links cube-sidebar" id="cube-friend-links">
    <div class="title">
        <a>Friend Links</a>
    </div>
    <ul class="list">
        
        <li>
            <!-- TODO change avatar.png to friend.png-->
            <img src="http://cube-1252774894.cosgz.myqcloud.com/friend_links/micblo.png">
            <a href="https://blog.micblo.com/" target="_blank">罗大佬</a>
        </li>
        
        <li>
            <!-- TODO change avatar.png to friend.png-->
            <img src="http://cube-1252774894.cosgz.myqcloud.com/friend_links/DIYgod.jpg">
            <a href="https://www.anotherhome.net/" target="_blank">DIYgod</a>
        </li>
        
        <li>
            <!-- TODO change avatar.png to friend.png-->
            <img src="/images/friend_links.jpg ">
            <a href="https://aonosora.com/" target="_blank">咪西西の部落格</a>
        </li>
        
    </ul>
</div>


        </div>
    </div>
</div>
<footer class="cube-footer">
    
© 2017 John Doe

<br>
Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>.&nbsp;Theme by <a href="https://github.com/ZEROKISEKI" target="_blank">AONOSORA</a>
</footer>
<!-- inject:script -->
<script src="/js/script.js"></script>
<!-- endinject -->
<div class="cube-loading out"></div>
</body>
</html>